The present invention relates to methods of providing service discovery between software applications and software components. More particularly, the present invention relates to systems and methods which facilitate the sharing of functionality between independent software applications and loosely coupled components.
Current software applications are developed as islands—largely independent of each other. A user or administrator purchases an application that provides a certain set of features, and manages a certain set of data. Frequently, this application will not use functions or services available from other applications unless it was originally designed to do so.
The ability to make two or more applications utilize each other's functionality has typically been achieved by essentially hard coding the applications together. Thus, in order to get the applications to utilize each other's functionality, the applications must typically be created with the knowledge of each other's available functions or services, and be designed to utilize these services. In other words, in order to utilize each other's functions or services, the applications are not typically created independently of each other. In the alternative, independent applications created without regard to each other's functionality can utilize each other's services if significant additional code is created to link the applications together. This is labor intensive, particularly given the large number of applications that would potentially need to be hard coded together in this manner.
Methods of discovering available services for use with an application or system are known. For example, the Universal Description, Discovery and Integration (UDDI) project resulted in a specification for distributed World Wide Web (WWW) based information registries of Web services. UDDI includes a publicly accessible set of implementations of that specification that allow businesses to register information about the Web services they offer so that other businesses can find them. Publication of Web services allows others to create programs which will interact with these published services. However, the services published by UDDI are not listed or accessible in a context specific manner, which creates difficulties in sharing of functionality between independent software applications and loosely coupled components. Although service discovery such as is provided using UDDI can be useful, the above-described problems of allowing independently created (i.e., created without knowledge of each other's services) software applications to access each other's functionality in a loosely coupled (i.e., not hard coded) manner still remain.
The present invention provides solutions to one or more of the above-described problems and/or provides other advantages over the prior art.